package innerclass;

import java.io.ObjectOutput;

class OuterClass {
    public int data1=1;
    private int data2=2;
    public static int data3=3;

    //静态内部类
    static class InnerClass{
        public int data4=4;
        private int data5 = 5;
        public static int data6=6;

        public void test() {
            //System.out.println(data1);  静态内部类不能访问外部类的非静态成员
            OuterClass out = new OuterClass();
            System.out.println(out.data1);  //但可以通过创建对象来访问
            System.out.println(data4);
        }
    }
}

public class Test3 {
    public static void main(String[] args) {
        OuterClass.InnerClass innerClass = new OuterClass.InnerClass();  //创建静态内部类对象不需要先创建外部类对象
        innerClass.test();
    }

    public static void func() {

        //局部内部类
        //定义在方法里面，有单独的字节码文件
        //不能被public static 修饰
        class Inner{
            public int data=10;
        }

        Inner inner = new Inner();
        System.out.println(inner.data);
    }
}
